package com.briup.day18;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * 对象反序列化： 提示运行错误：
 * Exception in thread "main"
 * java.io.InvalidClassException:
 * com.briup.day18.Student;
 * local class incompatible:
 * （序列化版本号 标识字节码信息唯一性）
 * serialVersionUID = 2065264185368665368,（long）
 * local class serialVersionUID =
 * -9211933032890051737
 * 每次修改class文件，产生不同的序列化版本号
 * 序列化------> 123
 * 反序列化----> 123
 *
 *
 * 对象反序列化。磁盘文件 序列信息----》内存 java对象
 * @author lining
 * @date 2024/1/30 11:19
 */
public class TestReadObject {
    public static void main(String[] args) throws Exception {
        //1.声明流 创建流对象
        FileInputStream fis = new FileInputStream("list.txt");
        ObjectInputStream ois = new ObjectInputStream(fis);
        //2.操作流： 读操作
        Object o = ois.readObject();
        System.out.println(o);
        System.out.println(o instanceof ArrayList); //true  Arraylist对象或子类对象
        System.out.println(o instanceof List); //true  List集合的实现类对象
        System.out.println(o instanceof Student);//true
        //调用方法获取学生的学号？多态方法 编译看左边 运行右边
        if (o instanceof List){
            int num = ((List) o).size();
            System.out.println(num);
        }
        if(o instanceof Student){
            int id = ((Student) o).getId();
        }
        //3.关闭流
        ois.close();
    }
}
